package com.txzt.gaea.business.project.domain.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.txzt.gaea.flow.vo.FlowBizStepVo;
import lombok.Data;
import org.beetl.sql.core.annotatoin.InsertIgnore;
import org.beetl.sql.core.annotatoin.Table;
import org.beetl.sql.core.annotatoin.UpdateIgnore;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@Table(name="tb_project_info")
public class ProjectInfo {

    /*主键id*/
    private Long id;
    /*流程id*/
    private Long flowId;
    /*是否删除*/
    private Integer isDelete;
    /*项目状态*/
    private Integer projectStatus;
    /*成果形式*/
    private String resultForm;
    /*已安排经费*/
    private BigDecimal arrangeFund;
    /*下发人*/
    private Long assignBy;
    /*经费预算*/
    private BigDecimal budgetFund;
    /*联系电话*/
    private String contactPhone;
    /*创建人*/
    private Long createBy;
    /*承担部门id*/
    private Long departId;
    /*所属部门*/
    private Long deptId;
    /*计划结束年度*/
    private String endYear;
    /*专家审核*/
    private String expertCheck;
    /*专家意见附件*/
    private String expertFile;
    /*专家意见*/
    private String expertOpinion;
    /*结束年份*/
    private String finishYear;
    /*选题依据及意义*/
    private String gistSense;
    /*翌年经费*/
    private BigDecimal nextFund;
    /*计划附件*/
    private String planFile;
    /*计划id*/
    private Long planId;
    /*计划分类*/
    private String planType;
    /*计划年度*/
    private String planYear;
    /*立项背景*/
    private String projectBackground;
    /*项目组长*/
    private Long projectLeader;
    /*项目名称*/
    private String projectName;
    /*项目编号*/
    private String projectNo;
    /*备注*/
    private String remark;
    /*开题报告*/
    private String reportFile;
    /*主要研究内容及要求*/
    private String researchContent;
    /*研究目的*/
    private String researchTarget;
    /*计划开始年度*/
    private String startYear;
    /*计划子类*/
    private String subType;
    /*任务名称*/
    private String taskName;
    /*更新人*/
    private Long updateBy;
    /*编报人*/
    private Long writeBy;
    /*年度经费*/
    private BigDecimal yearFund;
    /*下发时间*/
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date assignTime;
    /*创建时间*/
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    /*申报日期*/
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date declareTime;
    /*下载文档时间*/
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date downloadTime;
    /*生成计划草案时间*/
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date draftTime;
    /*更新时间*/
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
    /*编报时间*/
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date writeTime;

    /*创建人名*/
    @UpdateIgnore
    @InsertIgnore
    private String createName;
    /*更新人名*/
    @UpdateIgnore
    @InsertIgnore
    private String updateName;
    /*编报人名*/
    @UpdateIgnore
    @InsertIgnore
    private String writeName;
    /*下发人名*/
    @UpdateIgnore
    @InsertIgnore
    private String assignName;
    /*项目组长名*/
    @UpdateIgnore
    @InsertIgnore
    private String projectLeaderName;
    /*承担部门名*/
    @UpdateIgnore
    @InsertIgnore
    private String departName;
    @UpdateIgnore
    @InsertIgnore
    private List<Long> roleIds;
    /*当前步骤名称*/
    @UpdateIgnore
    @InsertIgnore
    private String currentStepName;
    /*当前审核人*/
    @UpdateIgnore
    @InsertIgnore
    private String currentStepMember;

    /*审核状态*/
    @UpdateIgnore
    @InsertIgnore
    private List<Integer> projectStatusIn;

    /*审核状态*/
    @UpdateIgnore
    @InsertIgnore
    private List<Integer> projectStatusNotIn;



    /*计划审核流程步骤*/
    @UpdateIgnore
    @InsertIgnore
    private List<FlowBizStepVo> planFlowStep;


    /*项目当前审核流程步骤*/
    @UpdateIgnore
    @InsertIgnore
    private List<FlowBizStepVo> projectFlowStep;

    /*是否可审核*/
    @InsertIgnore
    @UpdateIgnore
    private boolean isCheck;

}
